package ar.com.larreta.cambiador;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import ar.com.larreta.comunes.Objeto;
import ar.com.larreta.entidades.Mensaje;
import ar.com.larreta.entidades.TipoDocumento;

/**
 * Se encarga de cambiar o transformar un objeto de la vista en uno de negocio o viceversa
 * @author leonel.g.larreta
 *
 */
public class Cambiador extends Objeto {
	
	private Map<String, Cambiable> cambiadores;
	
	public Map<String, Cambiable> getCambiadores() {
		return cambiadores;
	}

	public void setCambiadores(Map<String, Cambiable> cambiadores) {
		this.cambiadores = cambiadores;
	}

	public Cambiador(){
		/*cambiadores = new HashMap<Class, Cambiable>();
		cambiadores.put(Mensaje.class, new CambiaMensajeEntidad());
		cambiadores.put(ar.com.larreta.intercambio.client.comunes.Mensaje.class, new CambiaMensajeVista());
		cambiadores.put(TipoDocumento.class, new CambiaTipoDocumentoEntidad());
		cambiadores.put(ar.com.larreta.intercambio.client.comunes.TipoDocumento.class, new CambiaTipoDocumentoVista());*/
	}
	
	public Object cambiar(Object origen){
		Cambiable cambiable = cambiadores.get(origen.getClass().getName());
		return cambiable.cambiar(origen);
	}

	public void agregarCabiador(String clase, Cambiable cambiable){
		cambiadores.put(clase, cambiable);
	}
	
	public Object cambiarCollection(Collection coleccion){
		Set setDestino = new HashSet();
		if (coleccion!=null){
			Iterator itAlumnos = coleccion.iterator();
			while (itAlumnos.hasNext()) {
				setDestino.add(cambiar(itAlumnos.next()));
			}
		}
		return setDestino;
	}
	
}
